/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoBaseDatos;
import java.sql.*;

import Controladores.Form.InsertarCapacitacionesForm;
import Controladores.Form.InsertarCongresosForm;
import Controladores.Form.InsertarFormacionAcademicaForm;
import Controladores.Form.InsertarProyectosForm;
import Controladores.Form.InsertarNuevoProfesorForm;
import Controladores.Form.InsertarPublicacionForm;
import Controladores.Form.InsertarReferenciaForm;
import ClasesParaConsultaJsp.Capacitaciones;
import java.util.LinkedList;
/**
 *
 * @author a70204
 */
public class GatewayEliminarProfesor {
    private ConexionBaseDatos establecerConexion = new ConexionBaseDatos();
    private Connection conn = null;
    private Statement stm = null;
    
    public void AbrirConexion(){
        conn = establecerConexion.ConectarBD();
    }
    
    
 public boolean EliminarProfesor(String cedula) throws SQLException{
    boolean elimino = false;
    this.AbrirConexion();
    int rowsEffected = 0;
    if (conn != null) {
        try {//se realiza el insert
            stm = conn.createStatement();
            String strSQL = "";
//*********************************************************            
            //elimina los proyectos del profesor que se va a eliminar
            ResultSet rs = stm.executeQuery("select codigoProyecto from tieneProyectos where cedulaProfesor='"+cedula+"'");
            LinkedList<InsertarProyectosForm> listaProyectos=new LinkedList<InsertarProyectosForm>();
            while (rs.next()){//con esto saco todos los proyectos que debo borrar
                InsertarProyectosForm proyec = new InsertarProyectosForm();
                proyec.setCodigoProyecto(rs.getString("codigoProyecto"));
                listaProyectos.add(proyec);
            }
            for (int i=0;i<listaProyectos.size();i++){
                strSQL = "Delete From Proyectos where codigoProyecto ='"+listaProyectos.get(i).getCodigoProyecto()+"'";
                rowsEffected = stm.executeUpdate(strSQL);
            }
//**************************************************************            
            //elimina los congresos del profesor que se va a eliminar
            ResultSet rs1 = stm.executeQuery("select codigoCongreso from AsisteCongresos where cedulaProfesor='"+cedula+"'");
            LinkedList<InsertarCongresosForm> listaCongre=new LinkedList<InsertarCongresosForm>();
            while (rs1.next()){//con esto saco todos los proyectos que debo borrar
                InsertarCongresosForm congre = new InsertarCongresosForm();
                congre.setCodigoCongreso(rs1.getString("codigoCongreso"));
                listaCongre.add(congre);
            }
            for (int i=0;i<listaCongre.size();i++){
                strSQL = "Delete From Congresos where codigoCongreso ='"+listaCongre.get(i).getCodigoCongreso()+"'";
                rowsEffected = stm.executeUpdate(strSQL);
            }
//***************************************************                   
            //elimina los capacitaciones del profesor que se va a eliminar
            ResultSet rs2 = stm.executeQuery("select nombreCapacitacion,fechaCapacitacion from ParticipaCapacitaciones where cedulaProfesor='"+cedula+"'");
            LinkedList<InsertarCapacitacionesForm> listaCapa=new LinkedList<InsertarCapacitacionesForm>();
            while (rs2.next()){//con esto saco todos los proyectos que debo borrar
                InsertarCapacitacionesForm capaci = new InsertarCapacitacionesForm();
                capaci.setNombre(rs2.getString("nombreCapacitacion"));
                capaci.setFecha(rs2.getString("fechaCapacitacion"));
                listaCapa.add(capaci);
            }
            for (int i=0;i<listaCapa.size();i++){
                strSQL = "Delete From Capacitaciones where nombreCapacitacion ='"+listaCapa.get(i).getNombre()+"' && fechaCapacitacion='"+listaCapa.get(i).getFecha()+"'";
                rowsEffected = stm.executeUpdate(strSQL);
            }
//**************************************************************
            //elimina las publicaciones del profesor que se va a eliminar
            ResultSet rs3 = stm.executeQuery("select nombrePublicacion,fechaPublicacion from realizaPublicaciones where cedulaProfesor='"+cedula+"'");
            LinkedList<InsertarPublicacionForm> listaPubli=new LinkedList<InsertarPublicacionForm>();
            while (rs3.next()){//con esto saco todos los proyectos que debo borrar
                InsertarPublicacionForm publi = new InsertarPublicacionForm();
                publi.setNombre(rs3.getString("nombrePublicacion"));
                publi.setFecha(rs3.getString("fechaPublicacion"));
                listaPubli.add(publi);
            }
            for (int i=0;i<listaPubli.size();i++){
                strSQL = "Delete From Publicaciones where nombrePublicacion ='"+listaPubli.get(i).getNombre()+"' && fechaPublicacion='"+listaPubli.get(i).getFecha()+"'";
                rowsEffected = stm.executeUpdate(strSQL);
            }
//****************************************************                      
            //manda a borrar al profesor
            rowsEffected=0;
            strSQL = "Delete From Profesor where cedula ='"+cedula+"'";
            rowsEffected = stm.executeUpdate(strSQL);
            if(rowsEffected==1){
                elimino = true;
            }else{
                elimino=false;
            }
            //retorno = mapping.findForward(SUCCESS);
        }catch(SQLException ex){
            //retorno = mapping.findForward(FALLACONEXION);
            elimino = false;
        }
        conn.close();//cierra la conexion       
    }
    return elimino;
}//fin del metodo eliminar
}//fin clase
